Get customer
curl --request GET \
--url https://firespark.cloud/api/storefront/v1/customers/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://firespark.cloud/api/storefront/v1/customers/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://firespark.cloud/api/storefront/v1/customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://firespark.cloud/api/storefront/v1/customers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://firespark.cloud/api/storefront/v1/customers/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://firespark.cloud/api/storefront/v1/customers/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://firespark.cloud/api/storefront/v1/customers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"organization_id": "11111111-1111-1111-1111-111111111111",
"merchant_id": "22222222-2222-2222-2222-222222222222",
"id": "auth0|abc123",
"name": "John Smith",
"email": "john@example.com",
"status": "ACTIVE",
"is_anonymous": false,
"email_verified": false,
"phone_verified": false,
"phone": "+593991234567",
"registration_date": "2026-01-15T10:30:00Z",
"gender": "MALE",
"dob": "1990-05-20T00:00:00Z",
"document_type": "CI",
"document_number": "1712345678",
"country": "EC",
"delivery_addresses": [
{
"alias": "Home",
"address_line1": "Av. Amazonas 123",
"address_line2": "Apt 4B",
"city": "Quito",
"state": "Pichincha",
"zip": "170150",
"country": "EC",
"reference": "Near the park",
"latitude": -0.1807,
"longitude": -78.4678,
"instructions": "Ring the bell",
"preferred": true,
"metadata": null
}
],
"billing_profiles": [
{
"alias": "Personal",
"type": "INDIVIDUAL",
"legal_name": "John Smith",
"address_line1": "Av. Amazonas 123",
"city": "Quito",
"country": "EC",
"tax_id": "1712345678",
"tax_id_type": "CI",
"preferred": true,
"metadata": null
}
],
"devices": [
{
"id": "iphone-15-pro",
"os": "IOS",
"fcm_token": "fcm-token-abc123",
"created_at": "2026-01-10T08:00:00Z",
"updated_at": "2026-01-15T10:30:00Z"
}
],
"consent": {
"email": true,
"push_notifications": true,
"in_app_messages": false,
"phone_calls": false,
"sms": false,
"whatsapp": false
},
"metadata": {}
}
}
Customers
Get customer
Retrieve the authenticated customer’s profile.
GET
/
customers
/
{id}
Get customer
curl --request GET \
--url https://firespark.cloud/api/storefront/v1/customers/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://firespark.cloud/api/storefront/v1/customers/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://firespark.cloud/api/storefront/v1/customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://firespark.cloud/api/storefront/v1/customers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://firespark.cloud/api/storefront/v1/customers/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://firespark.cloud/api/storefront/v1/customers/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://firespark.cloud/api/storefront/v1/customers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"organization_id": "11111111-1111-1111-1111-111111111111",
"merchant_id": "22222222-2222-2222-2222-222222222222",
"id": "auth0|abc123",
"name": "John Smith",
"email": "john@example.com",
"status": "ACTIVE",
"is_anonymous": false,
"email_verified": false,
"phone_verified": false,
"phone": "+593991234567",
"registration_date": "2026-01-15T10:30:00Z",
"gender": "MALE",
"dob": "1990-05-20T00:00:00Z",
"document_type": "CI",
"document_number": "1712345678",
"country": "EC",
"delivery_addresses": [
{
"alias": "Home",
"address_line1": "Av. Amazonas 123",
"address_line2": "Apt 4B",
"city": "Quito",
"state": "Pichincha",
"zip": "170150",
"country": "EC",
"reference": "Near the park",
"latitude": -0.1807,
"longitude": -78.4678,
"instructions": "Ring the bell",
"preferred": true,
"metadata": null
}
],
"billing_profiles": [
{
"alias": "Personal",
"type": "INDIVIDUAL",
"legal_name": "John Smith",
"address_line1": "Av. Amazonas 123",
"city": "Quito",
"country": "EC",
"tax_id": "1712345678",
"tax_id_type": "CI",
"preferred": true,
"metadata": null
}
],
"devices": [
{
"id": "iphone-15-pro",
"os": "IOS",
"fcm_token": "fcm-token-abc123",
"created_at": "2026-01-10T08:00:00Z",
"updated_at": "2026-01-15T10:30:00Z"
}
],
"consent": {
"email": true,
"push_notifications": true,
"in_app_messages": false,
"phone_calls": false,
"sms": false,
"whatsapp": false
},
"metadata": {}
}
}
Returns the customer record for the given external
id. The access token only grants access to the customer linked to the original OIDC sub claim, so id must match the token’s customer id.
Requires a Fire spark access token obtained through token
exchange.
Path parameters
| Parameter | Required | Description |
|---|---|---|
id | Yes | External customer identifier. Must match the token’s customer id. |
Request
curl "https://firespark.cloud/api/storefront/v1/customers/auth0|abc123" \
-H "Authorization: Bearer ACCESS_TOKEN"
Response
The response wraps a single customer object indata. Storefront responses omit internal fields such as birthday.
{
"data": {
"uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"organization_id": "11111111-1111-1111-1111-111111111111",
"merchant_id": "22222222-2222-2222-2222-222222222222",
"id": "auth0|abc123",
"name": "John Smith",
"email": "john@example.com",
"status": "ACTIVE",
"is_anonymous": false,
"email_verified": false,
"phone_verified": false,
"phone": "+593991234567",
"registration_date": "2026-01-15T10:30:00Z",
"gender": "MALE",
"dob": "1990-05-20T00:00:00Z",
"document_type": "CI",
"document_number": "1712345678",
"country": "EC",
"delivery_addresses": [
{
"alias": "Home",
"address_line1": "Av. Amazonas 123",
"address_line2": "Apt 4B",
"city": "Quito",
"state": "Pichincha",
"zip": "170150",
"country": "EC",
"reference": "Near the park",
"latitude": -0.1807,
"longitude": -78.4678,
"instructions": "Ring the bell",
"preferred": true,
"metadata": null
}
],
"billing_profiles": [
{
"alias": "Personal",
"type": "INDIVIDUAL",
"legal_name": "John Smith",
"address_line1": "Av. Amazonas 123",
"city": "Quito",
"country": "EC",
"tax_id": "1712345678",
"tax_id_type": "CI",
"preferred": true,
"metadata": null
}
],
"devices": [
{
"id": "iphone-15-pro",
"os": "IOS",
"fcm_token": "fcm-token-abc123",
"created_at": "2026-01-10T08:00:00Z",
"updated_at": "2026-01-15T10:30:00Z"
}
],
"consent": {
"email": true,
"push_notifications": true,
"in_app_messages": false,
"phone_calls": false,
"sms": false,
"whatsapp": false
},
"metadata": {}
}
}
Customer fields
| Field | Required | Type | Description |
|---|---|---|---|
uid | Yes | uuid | Fire spark internal identifier. |
organization_id | Yes | uuid | Fire spark organization identifier. |
merchant_id | Yes | uuid | Fire spark merchant identifier. |
id | Yes | string | Your external customer identifier. |
name | Yes | string | Full name. |
email | Yes | string \ | null | Email address. Null for anonymous customers. |
status | Yes | string | ACTIVE or INACTIVE. |
is_anonymous | Yes | boolean | Whether this is a guest customer. |
email_verified | Yes | boolean | Whether the email address is verified. |
phone_verified | Yes | boolean | Whether the phone number is verified. |
gender | No | string \ | null | MALE, FEMALE, or OTHER. |
dob | No | datetime \ | null | Date of birth (ISO 8601 with offset). |
document_type | No | string \ | null | Government ID type. |
document_number | No | string \ | null | Government ID number. |
country | No | string \ | null | Customer country. |
phone | Yes | string \ | null | Phone number in international format. |
registration_date | Yes | datetime | When the customer was registered. |
delivery_addresses | No | array | Saved delivery addresses (max 10). |
billing_profiles | No | array | Billing profiles with tax identifiers (max 10). |
devices | No | array | Push devices (max 10). |
consent | No | object \ | null | Channel consent preferences. |
metadata | No | object \ | null | Custom metadata (max 1MB serialized). |
Delivery address
| Field | Required | Type | Description |
|---|---|---|---|
alias | Yes | string | Label such as “Home” or “Office”. |
address_line1 | Yes | string | Primary street address. |
address_line2 | No | string | Apartment, suite, or floor. |
city | No | string | City. |
state | No | string | State or province. |
zip | No | string | Postal code. |
country | No | string | Country. |
reference | No | string | Landmark or reference point. |
latitude | No | number | Latitude between -90 and 90. |
longitude | No | number | Longitude between -180 and 180. |
instructions | No | string | Delivery instructions. |
preferred | No | boolean | Default address. Defaults to false. At most one address may be preferred. |
metadata | No | object \ | null | Custom metadata for this address. |
Billing profile
| Field | Required | Type | Description |
|---|---|---|---|
alias | Yes | string | Label such as “Personal” or “Business”. |
type | Yes | string | INDIVIDUAL or BUSINESS. |
legal_name | Yes | string | Legal name for invoicing. |
address_line1 | Yes | string | Primary billing address. |
address_line2 | No | string | Additional address line. |
city | No | string | City. |
state | No | string | State or province. |
zip | No | string | Postal code. |
country | No | string | Country. |
tax_id | Yes | string | Tax identifier value. |
tax_id_type | Yes | string | One of VAT, EIN, SSN, TIN, NIF, CUIT, RUT, NIT, RCN, RUC, CI, DNI, PASSPORT, or OTHER. |
preferred | No | boolean | Default profile. Defaults to false. At most one profile may be preferred. |
metadata | No | object \ | null | Custom metadata for this profile. |
Device
| Field | Required | Type | Description |
|---|---|---|---|
id | Yes | string | External device identifier. |
os | Yes | string | IOS, ANDROID, or WEB. |
fcm_token | Yes | string | Firebase Cloud Messaging token. |
created_at | Yes | datetime | When the device was registered. |
updated_at | Yes | datetime | When the device was last updated. |
Consent
| Field | Type | Default | Description |
|---|---|---|---|
email | boolean | false | Email marketing |
push_notifications | boolean | false | Push notifications |
in_app_messages | boolean | false | In-app messages |
phone_calls | boolean | false | Phone calls |
sms | boolean | false | SMS messages |
whatsapp | boolean | false | WhatsApp messages |
Error responses
| Status | Description |
|---|---|
401 | Missing or invalid access token. |
403 | The id does not match the token’s customer id. |
404 | No customer found with the given id. |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The customer unique identifier in your system
Response
Ok
Customer profile returned by Storefront API endpoints. Omits internal fields such as birthday.
Show child attributes
Show child attributes
⌘I